
#pragma once

#include "ModelRCMgr.h"

class CSkelMeshNode;
class _Bone;
class _BoneNode;
class _Anim;
class CModel;
class _ModelRCDes;
class CRigidMeshNode;



class CModelRCMgrIns
{
public:
	CModelRCMgrIns(void);
	virtual ~CModelRCMgrIns(void);

	static CModelRCMgrIns& GetSingleton()
	{
		static CModelRCMgrIns m_Instance;
		return m_Instance;
	};

	CSkelMeshNode*  GetSkelMesh(const _ModelRCDes* pDes);
	_Bone*          GetBone(const _ModelRCDes* pDes);
	_Anim*          GetAnim(const _ModelRCDes* pDes);
	CRigidMeshNode* GetNPCWeapon(const _ModelRCDes* pDes);
	CRigidMeshNode* GetItem(const _ModelRCDes* pDes);
	TextureItem*       GetTexture(const _ModelRCDes* pDes);

	CSkelMeshNode*  GetSkelMesh(const char* pszName);
	_Bone*          GetBone(const char* pszName);
	_Anim*          GetAnim(const char* pszName);
	CRigidMeshNode* GetNPCWeapon(const char* pszName);
	CRigidMeshNode* GetItem(const char* pszName);
	TextureItem*       GetTexture(const char* pszName,const int& iCharType);

private:
	void Init();
	void Term();

private:

	CModelRCMgr<CSkelMeshNode> * m_pSkelMeshMgr;
	CModelRCMgr<_Bone>         * m_pBoneMgr;
	CModelRCMgr<_Anim>         * m_pAnimMgr;

	CModelRCMgr<CRigidMeshNode>* m_pNPCWeaponMgr;
	CModelRCMgr<CRigidMeshNode>* m_pItemMgr;

};
